The invention relates to apparatus for generating an image of objects in a three dimensional space for display as a two dimensional regular pixel array comprising a series of rows of picture elements (pixels), comprising:
means for generating and storing a plurality of primitive descriptors, each comprising a geometrical and surface description of a primitive of the desired image, PA1 means for using the stored primitive descriptors to render a plurality of point sampled intermediate pixel arrays, PA1 means for imposing for each such rendition a different pre-determined offset between the primitives and the sample points, and PA1 means for combining the plurality of intermediate pixel arrays to generate and store a corresponding filtered pixel array. PA1 means for calculating with sub-pixel precision a horizontal start position for the span; PA1 means for calculating a start value for at least one further parameter; PA1 means for receiving with sub-pixel precision a vertical offset value, for calculating therefrom a vertical offset correction for the horizontal start position and for modifying the horizontal start position in accordance with the vertical offset correction; PA1 means for calculating for the or each further parameter start value (i) a correction due to the received vertical offset and (ii) a correction due to the sub-pixel part of the modified horizontal start position to compensate for truncation of the horizontal start position to an integer pixel position, and for modifying the or each further parameter start value in accordance with those corrections.
An apparatus of the type set forth in the opening paragraph is known from `Fast Spheres, Shadows, Textures, Transparencies and Image Enhancements in Pixel Planes` by Henry Fuchs et al in Computer Graphics, Vol. 19, No. 3 (SIGGRAPH 85) at pages 111-120, in particular at pages p. 119 and 120 under `Successive Refinement`. According to Fuchs, "Each pixel (xy) is sub-divided into a grid of sub-pixels so that each sub-pixel has an address of the form (x+xoffset, y+yoffset). We generate the image several times, for example 16, each time offsetting the image slightly by some (xoffset, yoffset) in such a way that the sample points within a pixels area form a reasonable distribution. (The shift is easily achieved by adding A.xoffset+B.yoffset to the C.coefficient of each broadcast triple.) Two sets of colour buffers are maintained, one to store the colour generated by the latest image generation offset and the other to store a running average as we move around the sub-pixel grid."
The primary aim of the filtering applied by this method is to reduce aliasing artefacts caused by the sampling process. One obtrusive artefact of aliasing is the staircase structure imposed on an edge of a primitive which slopes relative to the pixel array axes. This effect becomes particularly obtrusive in the case where the edge of the primitive is nearly aligned with an axis of the pixel array.
Unfortunately, while it is desirable to bring such high-performance (real-time) image synthesis to the consumer marketplace, the cost of the `pixel planes` hardware and further the large memory required for two full-frame colour buffers makes the Fuchs method too expensive for application in consumer hardware.
A class of rendering algorithms known as scanline algorithms are also known, for example from E. Catmull, "A Hidden-surface Algorithm with Anti-aliasing", Computer Graphics Vol. 12, No. 3, 6-11 (SIGGRAPH 1978) and L. Carpenter, "The A-buffer, an Antialiased Hidden Surface Method", Computer Graphics Vol. 18, No. 3, 103-108 (SIGGRAPH 1984). In scanline algorithms, the image is generated one pixel row at a time. However, the antialiasing algorithms which are described by Catmull and Carpenter are undesirably complex for implementation in hardware, especially consumer hardware.